clc
clear all
close all

%读取数据
filename='2022-11-22 00_00_00.csv';
table = readtable(filename);

%时间和数据分开保存
timestamps=table(:,1);
data=table(:,2:end);
data=table2array(data);

%初始化专家系统阈值及输出调整量
TotalWeightShreshold = 20;
CurrentShrehold = [130 160];
y = zeros(length(data),1);

result = 0;   % 输出结果
current = 0;    % 当前电流大小
change_water = [];

%专家系统
for i = 1:length(data)
    %% 判断观看电流
    % 压球电流a[7],压球电流b[11]
    %% 进行判断电流
    % 1 辊子电流a 不工作，b工作 看b工作
    % 2 辊子电流b 不工作，a工作 看a的电流
    % 3两者都不工作 输出result
    % 4两者都工作 看b的电流

%     if data(i,10) < 130 && data(i,11) < 10 &&...
%             data(i,6) < 130 && data(i,7) < 10
%         % 判断a、b是否空转 情况3
%         result;  % 退出程序
%     else
%         if data(i,10) < 130 && data(i,11) < 10 &&...
%                 data(i,6) >= 130 && data(i,7) < 10
%             % 判断电流b不工作，a工作 看a 的电流
%             current = data(i,6);
%         else
%             % 看b的电流即可
%             current = data(i,10);
%         end

        %第一层，判断电流
        

        %判断总料[20]、内配改变[25]、单压返料[26]
        %% 异常情况
        if data(i,19) == 1
            % 判定总料量是否发生变化[20]
            result;      % 输出结果
        else
            if (data(i,24)) == 1
                % 判断内配是否发生改变[25]
                result;
            else
                % 判断是否单压返料
                if (data(i,25)) == 1
                    result;
                %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                %%  属于正常情况
                else
                    % 判断是否为预定料量少
                    if data(i,18) < TotalWeightShreshold
                        if current < 138
                            % 成球率[27]
                            if data(i,26)< 0.6
                                % 判断粉多粉少
                                result;
                            else
                                change_water(i) = -0.2;    % 减少渗水量
                            end
                        elseif current <= 150
                            % 正常情况无需输出
                            change_water(i) = 0; % 不需要改变渗水量
                        else
                            change_water(i) = 0.2; % 增加渗水量水量
                        end
                    end

                    % 预定料量多的情况
                    if current < 138
                        % 成球率[27]
                        if data(i,26)< 0.6
                            % 判断粉多粉少
                            result;
                        else
                            change_water(i) = -0.2; % 减少渗水量水量
                        end
                    elseif current <= 150
                        % 正常情况无需输出
                        change_water(i) = 0; % 不需要改变渗水量
                    else
                        change_water(i) = 0.2; % 增加渗水量
                    end

                end

            end
        end

    end
    result = data(i,2) + change_water;
    
%     fprintf("对于渗水量的改变为：%f\n",change_water)
    result = 0;
    
end

change_water = change_water';
data(:,3) = change_water;